//懒汉单例模式
//有读操作有写操作
class Singletnlazy {
    volatile  private static Singletnlazy instance=null;

    //volatile  保存内存可见性
    //保存       禁止指令重排序
    public static Singletnlazy getInstance()
    {
        //使用双重 if 判定, 降低锁竞争的频率.
        if(instance==null)
        {
            //保证if和new是一个原子操作
            synchronized (Singletnlazy.class)
            {
                if (instance == null)
                {
                    instance = new Singletnlazy();

                }
            }
        }

            return instance;

    }

    private Singletnlazy()
    {

    }
}
public class ThreadDemo11 {

    public static void main(String[] args) {

        Singletnlazy s1=Singletnlazy.getInstance();
        Singletnlazy s2=Singletnlazy.getInstance();
        System.out.println(s1==s2);
    }
}
